// -----------
// 这里放的都是验证规则的一些分离的模块  应用了第三方的模块hapi/joi
// 模块本身自定义了一些校验的规则 我们直接拿来用就好
//  写完以后要导出去  在路由的第二个参数里 调用第三方模块  express-joi进行校验

// 导入定义验证规则的包
const joi = require("@hapi/joi");

/**
 * string() 值必须是字符串
 * alphanum() 值只能是包含 a-zA-Z0-9 的字符串
 * min(length) 最小长度
 * max(length) 最大长度
 * required() 值是必填项，不能为 undefined
 * pattern(正则表达式) 值必须符合正则表达式的规则
 */

// -----------注册的时候用户名和密码的验证规则------开始---------
// 验证用户名、密码的规则
const username = joi.string().alphanum().min(3).max(16).required();
const password = joi
  .string()
  .pattern(/^[\S]{6,12}$/)
  .required();

// 登录和注册表单的验证规则对象
exports.reg_login_schema = {
  // 表示需要对 req.body 中的数据进行验证
  body: {
    username,
    password,
  },
};

// -------注册的时候用户名和密码的验证规则------结束------------

// --------------更新用户的规则-开始----------
// 定义 id, nickname, emial 的验证规则
const id = joi.number().integer().min(1).required();
const nickname = joi.string().required();
const email = joi.string().email().required();

// 更新用户基本信息的验证规则对象
exports.update_userinfo_schema = {
  body: {
    id,
    nickname,
    email,
  },
};

// --------------更新用户的规则-结束-------------------

// ------------重置密码验证规则-------------------开始
// 重置密码验证规则对象
exports.update_password_schema = {
  body: {
    oldPwd: password,
    newPwd: joi.not(joi.ref("oldPwd")).concat(password),
  },
};
// ------------重置密码验证规则-------------------结束

// 严重用户头像的规则  -----开始-----

// 验证头像数据
const avatar = joi.string().dataUri().required();

// 验证规则对象 - 更新头像
exports.update_avatar_schema = {
  body: {
    avatar,
  },
};
// 严重用户头像的规则  -----结束-----
